package model

import (
	"gorm.io/gorm"
	"time"
)

type TestModule struct {
	Id                   uint64         `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	TestManagementId     uint64         `gorm:"column:test_management_id;type:int UNSIGNED;comment:考试管理ID;not null;" json:"test_management_id"`        // 考试管理ID
	TestQuestionType     string         `gorm:"column:test_question_type;type:varchar(3);comment:试题类型;not null;" json:"test_question_type"`            // 试题类型
	Difficulty           string         `gorm:"column:difficulty;type:varchar(3);comment:试题难度;not null;" json:"difficulty"`                            // 试题难度
	ProfessionalScopeOne string         `gorm:"column:professional_scope_one;type:varchar(10);comment:专业范围一级;not null;" json:"professional_scope_one"` // 专业范围一级
	ProfessionalScopeTwo string         `gorm:"column:professional_scope_two;type:varchar(10);comment:专业范围二级;not null;" json:"professional_scope_two"` // 专业范围二级
	UId                  uint64         `gorm:"column:u_id;type:int;comment:用户id;not null;" json:"u_id"`                                               // 用户id
	Author               string         `gorm:"column:author;type:varchar(30);comment:作者;not null;" json:"author"`                                     // 作者
	AuthorCard           string         `gorm:"column:author_card;type:char(32);comment:作者工号;not null;" json:"author_card"`                            // 作者工号
	FounderId            uint64         `gorm:"column:founder_id;type:int UNSIGNED;comment:创建人id;not null;" json:"founder_id"`                         // 创建人id
	Founder              string         `gorm:"column:founder;type:varchar(30);comment:创建人;not null;" json:"founder"`                                  // 创建人
	FounderCard          string         `gorm:"column:founder_card;type:char(32);comment:创建人工号;not null;" json:"founder_card"`                         // 创建人工号
	TestQuestions        string         `gorm:"column:test_questions;type:varchar(255);comment:考试题目;not null;" json:"test_questions"`                  // 考试题目
	TestOptionId         uint64         `gorm:"column:test_option_id;type:int;not null;" json:"test_option_id"`
	TestManagementIds    uint64         `gorm:"column:test_management_ids;type:int UNSIGNED;comment:试题选项ID;not null;" json:"test_management_ids"` // 试题选项ID
	Option               string         `gorm:"column:option;type:varchar(255);comment:选项值;not null;" json:"option"`                              // 选项值
	Select               string         `gorm:"column:select;type:varchar(30);comment:选项;not null;" json:"select"`                                // 选项
	TestAnswer           string         `gorm:"column:test_answer;type:varchar(10);comment:试题答案;not null;" json:"test_answer"`                    // 试题答案
	Analysis             string         `gorm:"column:analysis;type:varchar(255);comment:解析;not null;" json:"analysis"`                           // 解析
	Keywords             string         `gorm:"column:keywords;type:varchar(255);comment:关键字;not null;" json:"keywords"`                          // 关键字
	ViewingRange         string         `gorm:"column:viewing_range;type:varchar(30);comment:观看范围;not null;default:内部;" json:"viewing_range"`     // 观看范围
	ReviewerId           uint64         `gorm:"column:reviewer_id;type:int UNSIGNED;comment:审核人id;not null;" json:"reviewer_id"`                  // 审核人id
	Reviewer             string         `gorm:"column:reviewer;type:varchar(30);comment:审核人;not null;" json:"reviewer"`                           // 审核人
	ReviewerCard         string         `gorm:"column:reviewer_card;type:char(32);comment:审核人工号;not null;" json:"reviewer_card"`                  // 审核人工号
	AuditStatus          string         `gorm:"column:audit_status;type:varchar(30);comment:审核状态;not null;" json:"audit_status"`                  // 审核状态
	CreatedAt            time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt            time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt            gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (t *TestModule) TableName() string {
	return "test_module"
}
